// runtime包里面定义了一些协程管理相关的api
// runtime.Gosched() 让出CPU时间片，重新等待安排任务
// runtime.Goexit() 退出当前协程
// runtime.GOMAXPROCS() 最大的cpu核心数可以设置
package main

import (
	"fmt"
	"runtime"
	"time"
)

func sholw(s string) {
	for i := 0; i < 10; i++ {
		if i >= 5 {
			runtime.Goexit() //退出协程
		}
		fmt.Println(s)
	}
}

func q6() {
	for i := 0; i < 10; i++ {
		fmt.Println("A:", i)
	}
}
func q7() {
	for i := 0; i < 10; i++ {
		fmt.Println("B:", i)
	}
}
func main() {
	go sholw("java") //子协程运行
	// 主协程
	for i := 0; i < 2; i++ {
		//切一下，再次分配任务
		runtime.Gosched()
		fmt.Println("Golang")
	}
	fmt.Printf("当前电脑的cpu核心数：%v\n", runtime.NumCPU())
	runtime.GOMAXPROCS(1) //修改为2查看结果
	go q6()
	go q7()
	time.Sleep(time.Second)
	fmt.Println("end...")
}
